🚀 BÀI 6 - JavaScript Fundamentals

📐 Math Object

Math object trong JavaScript cung cấp các phương thức và thuộc tính toán học.

Thuộc tính Math quan trọng:

Math.PI        // 3.141592653589793
Math.E         // 2.718281828459045
Math.LN2       // 0.6931471805599453
Math.SQRT2     // 1.4142135623730951

Phương thức Math phổ biến:

// Làm tròn số
Math.round(4.6);    // 5
Math.floor(4.9);    // 4
Math.ceil(4.1);     // 5
Làm tròn số:
Làm tròn tới số chữ số thập phân:
Để làm tròn tới n chữ số thập phân, dùng toFixed(n) với số.
Lưu ý: toFixed() trả về chuỗi, muốn dùng số thì chuyển lại bằng Number().
let x = 3.141592;
console.log(x.toFixed(2)); // "3.14" (chuỗi)
console.log(Number(x.toFixed(3))); // 3.142
// Giá trị tuyệt đối
Math.abs(-4.7);     // 4.7
Giá trị tuyệt đối:
Math.abs(x) trả về giá trị tuyệt đối của số x (luôn là số dương hoặc 0).
Math.abs(-4.7); // 4.7
Math.abs(3); // 3
// Lũy thừa và căn bậc hai
Math.pow(2, 3);     // 8
Math.sqrt(16);      // 4
Lũy thừa và căn bậc hai:
// Min và Max
Math.min(1, 3, 2);  // 1
Math.max(1, 3, 2);  // 3
Tìm giá trị nhỏ nhất/lớn nhất:

🏋️ Bài tập Math:

Tính diện tích hình tròn với bán kính 5:

let radius = 5;
let area = Math.PI * Math.pow(radius, 2);
console.log(`Diện tích: ${area.toFixed(2)}`);
Output: Diện tích: 78.54

🎲 Random Numbers

Math.random() tạo số ngẫu nhiên từ 0 (bao gồm) đến 1 (không bao gồm).

// Số ngẫu nhiên từ 0 đến 1
Math.random();              // 0.123456789

// Số ngẫu nhiên từ 0 đến 10
Math.random() * 10;         // 7.123456789

// Số nguyên ngẫu nhiên từ 0 đến 9
Math.floor(Math.random() * 10);  // 7

// Số nguyên ngẫu nhiên từ 1 đến 10
Math.floor(Math.random() * 10) + 1;  // 8

Hàm tạo số ngẫu nhiên trong khoảng:

function randomBetween(min, max) {
    return Math.floor(Math.random() * (max - min )) + min;
}

// Sử dụng
console.log(randomBetween(5, 15));  // Số từ 5 đến 15

🎯 Bài tập Random:

Tạo game đoán số từ 1 đến 100:

let secretNumber = Math.floor(Math.random() * 100) + 1;
let guess = 50;

if (guess === secretNumber) {
    console.log("Chúc mừng! Bạn đã đoán đúng!");
} else if (guess < secretNumber) {
    console.log("Số bạn đoán nhỏ hơn số bí mật");
} else {
    console.log("Số bạn đoán lớn hơn số bí mật");
}

✅ Booleans

Boolean là kiểu dữ liệu chỉ có 2 giá trị: true hoặc false.

Tạo Boolean:

let isTrue = true;
let isFalse = false;

// Sử dụng Boolean constructor
let bool1 = Boolean(1);      // true
let bool2 = Boolean(0);      // false
let bool3 = Boolean("");     // false
let bool4 = Boolean("Hello"); // true

Giá trị Falsy và Truthy:

Falsy Values Truthy Values
false, 0, "", null, undefined, NaN Tất cả các giá trị khác
// Kiểm tra Falsy/Truthy
console.log(Boolean(0));         // false
console.log(Boolean(""));        // false
console.log(Boolean(null));      // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN));       // false

console.log(Boolean(1));         // true
console.log(Boolean("Hello"));   // true
console.log(Boolean([]));        // true
console.log(Boolean({}));        // true

🔍 Comparison and Logical Operators

Toán tử so sánh:

Toán tử Ý nghĩa Ví dụ
== Bằng (so sánh giá trị) 5 == "5" → true
=== Bằng tuyệt đối (so sánh giá trị và kiểu) 5 === "5" → false
!= Không bằng 5 != 3 → true
!== Không bằng tuyệt đối 5 !== "5" → true
> Lớn hơn 5 > 3 → true
< Nhỏ hơn 3 < 5 → true
>= Lớn hơn hoặc bằng 5 >= 5 → true
<= Nhỏ hơn hoặc bằng 3 <= 5 → true
let a = 5;
let b = "5";

console.log(a == b);   // true (chuyển đổi kiểu)
console.log(a === b);  // false (khác kiểu dữ liệu)
console.log(a != b);   // false
console.log(a !== b);  // true

Toán tử logic:

Toán tử Ý nghĩa Ví dụ
&& AND logic true && false → false
|| OR logic true || false → true
! NOT logic !true → false
let age = 25;
let hasLicense = true;

// AND operator
if (age >= 18 && hasLicense) {
    console.log("Có thể lái xe");
}

// OR operator
if (age < 18 || !hasLicense) {
    console.log("Không thể lái xe");
}

// NOT operator
let isMinor = !(age >= 18);
console.log(isMinor); // false

💡 Lưu ý quan trọng:

🏆 Bài tập tổng hợp:

Đề bài: Viết chương trình kiểm tra điều kiện vào công viên dựa trên các thông tin đầu vào sau:

Yêu cầu đầu ra:

let age = Math.floor(Math.random() * 100) + 1;
let hasTicket = Math.random() > 0.5;
let isWeekend = true;

console.log(`Tuổi: ${age}, Có vé: ${hasTicket}, Cuối tuần: ${isWeekend}`);

if (age >= 6 && age <= 60 && hasTicket) {
    console.log("✅ Được vào công viên");
} else if (age < 6) {
    console.log("🎈 Trẻ em miễn phí");
} else if (age > 60 && isWeekend) {
    console.log("👴 Người cao tuổi được giảm giá cuối tuần");
} else {
    console.log("❌ Không được vào công viên");
}

🎓 Hoàn thành Bài 6!

Bạn đã học xong các khái niệm cơ bản về Math Object, Random, Booleans và Comparison/Logical Operators trong JavaScript!